One central component of a computer system operating in a UNIX® environment is an operating system kernel. In a typical UNIX® system, many applications, or processes may be running. All these processes use a memory-resident kernel to provide system services. The kernel manages the set of processes that are running on the system by ensuring that each such process is provided with some central processor unit (CPU) cycles when needed by the processes and by arranging for each such process to be resident in memory so that the process can run when required. The kernel provides a standard set of services that allows the processes to interact with the kernel and to simplify the task of the application writer. In the UNIX® environment, these services are sometimes referred to as “system calls,” because the process calls a routine in the kernel (system) to undertake some specific task. Code in the kernel will then perform the task for the process, and will return a result to the process. In essence, the kernel fills in the gaps between what the process intends to happen, and how the system hardware needs to be controlled to achieve the process's objective.
The kernel's standard set of services is expressed as kernel modules (or simply, modules). The kernel typically includes modules such as drivers, including Streams drivers and device drivers, file system modules, scheduling classes, Streams modules, and system calls. These modules are compiled and subsequently linked together to form the kernel. Subsequently, when the system is started or “booted up”, the kernel is loaded into memory.
Each module in the kernel has its own unique configuration. Some modules may include tunables, which govern the behavior of the kernel. Some tunables enable optional kernel behavior, and allow a system administrator to adapt a kernel to the administrator's own specific desires. In the discussion that follows, a module means any separately configurable unit of kernel code; a system file means a flat text file that contains administrator configuration choices in a compact, machine-readable format; and module metadata means data that describes a module's capabilities and characteristics.